1. Field of the Invention
The present invention relates to licensing software. More particularity, the present invention relates to an apparatus and method for transferring access privileges for executing a licensed software program from an authorized node having a first hardware agent to a non-authorized node having a second hardware agent without violating a specific-user license.
2. Background of Art Related to the Invention
Early in the evolution of computer systems, modernized businesses typically employed a room-sized, centralized mainframe having several "dumb" terminals connected to the mainframe. With the emergence of smaller, faster and more powerful computers, many of these modernized businesses have removed their centralized mainframes in favor of employing a number of stand-alone computers or a distributed network (e.g., a local area network) having a collection of personal computers, wherein each user has control over his or her own personal computer.
Observing this decentralizing trend, many software developers are licensing their software according to a particular licensing scheme commonly referred to as a "user-specific" license. The user-specific license generally permits a predetermined number of individuals to operate a particular software program in a specific manner at any given time. Thus, the license is associated with the select number of individuals and not to certain nodes. For the scope of this application, a "node" is defined as an hardware product having "intelligence" such as a computer, printer, facsimile machine and the like, preferably including the present invention. A paramount problem associated with user-specific software licenses is that it indirectly encourages unauthorized usage and/or copying of the licensed software which erodes potential licensing revenue for software developers.
For many years, software developers have sought a way of protecting their software from being used and copied beyond the terms of the user-specific license while business licensees have been attempting to greatly mitigate any potential vicarious liability from illegal usage or copying of licensed software by their employees. Thus, there exists an interest by both the software developers and the business licensees alike to prevent the proliferation of software beyond the terms of the user-specific license.
Currently, compliance with a user-specific software license is sometimes accomplished by using a physical hardware device referred to as a "dongle". A dongle is a physical hardware device that is packaged with the licensed software program when initially purchased. It typically couples to a parallel port of a node e.g., a personal computer. At various times during execution, the licensed software program of interest will transmit an authorization message (referred to as a "challenge") to an active device employed within the dongle. The active device within the dongle processes the challenge using secret information (hereinafter referred to as a "valid license token") stored internally within the dongle and generates a return message (referred to as a "response"). The software program compares this response to an expected response and permits further execution only if these responses are identical.
Thus, while the user is able to copy the licensed software program and load it onto multiple personal computers, only a first personal computer, to which the dongle is connected, would be able to execute this software program. In order to execute the licensed software program on another personal computer, the dongle must be physically removed from the first personal computer and coupled to the other personal computer. As a result, the software on the first personal computer is disabled. It is clear that multiple installations of the licensed software program do not cause any adverse fiscal effects to the software developer because the number of dongles provided to the business licensee is generally limited to the number of persons agreed to under the user-specific software license.
Although the dongles ensure compliance with the user-specific license, it affords a number of disadvantages. One disadvantage is that the dongle must be physically delivered to the customer. Thus, while systems for electronic delivery of software (referred to as "content distribution") are being proposed and implemented to increase convenience and reduce distribution costs, the dongle, as a physical device, still requires the traditional distribution methodology with its associated costs. By requiring a dongle to protect the fiscal interests of the software developer, the customer would have to endure the onerous task of (i) directly obtaining the dongle at a chosen location and thereafter attaching the dongle to the node before being able to use the licensed software program, or (ii) ordering the licensed software program prior to its intended use so that the content distributor has time to mail the dongle to the customer. In any event, the dongle impedes the efficiency and appealability of content distribution.
Another disadvantage is that the removal and attachment of the dongle is a time-consuming process. In a time-sensitive business, the exchange of the dongle effects the overall performance of the business. A further disadvantage is continual removal and attachment of the dongle increases the likelihood of the dongle becoming damaged and non-functional, requiring the business to await the new dongle before being able to use the software application again.
Yet another disadvantage is that although the license is directed toward individuals, the dongle generally is attached to the node. Thus, if the user travels to another machine (e.g., a personal computer located at his or her home), he or she is precluded from using the licensed software program unless the user has possession of the dongle.